home *** CD-ROM | disk | FTP | other *** search
- {
- Here you have an encriptation program based in Xor encription by
- bits manipulation
-
- XOR 1101 1001 the origin file
- 0101 0011 Password Encription
- _____________ ^^
- 1000 1010
-
-
- XOR 1000 1010 the destination file
- 0101 0011 Password decryption
- -------------- ^^
- 1101 1001
-
-
- I recommend you to read the book "Advanced Turbo Pascal: Programming and
- Techniques" of Herbert Schildt (1987)
- (The book i read)
- }
-
-
- PROGRAM Clave;
- { Por: JAVIER PEREZ-VIGO FDEZ 6/01/1994 }
- { Codifica y descodifica ficheros mediante un XOR }
- USES CRT;
- VAR
- Fuente,Destino: FILE;
- Ma,Mo: CHAR;
- Buffer: ARRAY[1..2048] of byte;
- Leidos,f,a,b,c,d,Largo1,Largo2,Largo3: INTEGER;
- ch:char;
- Par1,Par2,Par3: STRING;
-
- FUNCTION EXISTE_ARCH(Nombre:STRING):BOOLEAN;
- VAR
- F:FILE;
- OK:BOOLEAN;
- BEGIN { Existe_Arch }
- Assign (f,Nombre);
- {$I-} {Exists file?}
- Reset(f);
- {$I+}
- OK:=IOresult=0;
- If Not OK then
- Existe_Arch:=False
- else
- begin
- close(f);
- existe_Arch:=True;
- end; { else }
- END; { Existe_Arch }
-
- PROCEDURE MENU;
- BEGIN { Menu }
- Clrscr;
- TextColor(white);
- GotoXY( 1, 1);Write('╔══════════════════════════════════════════════════════════════════════════════╗');
- GotoXY( 1, 2);Write('║ ╔═════════════════════════════════════════════════════════════════╗ ║');
- GotoXY( 1, 3);Write('║ ║ UTILIDAD DE ENCRIPACION / DESENCRIPTACION ║ ║');
- GotoXY( 1, 4);Write('║ ║ Por: Javier Pérez-Vigo 1993 ║ ║');
- GotoXY( 1, 5);Write('║ ╚═════════════════════════════════════════════════════════════════╝ ║');
- GotoXY( 1, 6);Write('║ ║');
- GotoXY( 1, 7);Write('║ ╔═════════════════════════════════════════════════════════════════╗ ║');
- GotoXY( 1, 8);Write('║ ║ ∙Nombre del archivo a des/encriptar : ║ ║');
- {Name of the file to de/encript}
-
- GotoXY(60,8);TextColor(red);Write('? ');
- GotoXY(60,8);TextColor(red);Write(Paramstr(1));
- TextColor(white);
- GotoXY( 1, 9);Write('║ ║ ║ ║');
- GotoXY( 1,10);Write('║ ║ ∙Nombre del archivo des/encriptado : ║ ║');
-
- {Name of the to de/encripted file}
-
- GotoXY(60,10);TextColor(red);Write('? ');
- GotoXY(60,10);TextColor(red);Write(paramstr(2));
- TextColor(white);
- GotoXY( 1,11);Write('║ ║ ║ ║');
- GotoXY( 1,12);Write('║ ║ ∙Clave de encriptación: ║ ║');
- {Password}
-
- GotoXY(60,12);TextColor(red);Write('? ');
- GotoXY(60,12);TextColor(red);Write(paramstr(3));
- TextColor(white);
- GotoXY( 1,13);Write('║ ║ ║ ║');
- GotoXY( 1,14);Write('║ ╠═════════════════════════════════════════════════════════════════╣ ║');
- GotoXY( 1,15);Write('║ ║ ║ ║');
- GotoXY( 1,16);Write('║ ╚═════════════════════════════════════════════════════════════════╝ ║');
- GotoXY( 1,17);Write('║ ║');
- GotoXY( 1,18);Write('║ ║');
- GotoXY( 1,19);Write('║ ║');
- GotoXY( 1,20);Write('║ ║');
- GotoXY( 1,21);Write('║ ║');
- GotoXY( 1,22);Write('╚══════════════════════════════════════════════════════════════════════════════╝');
- END;
- PROCEDURE FIN;
- BEGIN
- MENU;
- TextColor(YELLOW); {Clave [origin] [destination] [password number] }
- GotoXY( 6,17);
- WriteLn (' Clave [origen] [destino] [nº clave]');
- TextColor(RED);
- GotoXY( 6,18);
- WriteLn('=======================================');
- TextColor(YELLOW);
- GotoXY( 6,19);
- WriteLn (' ENCRIPTAR: Clave texto.doc secret.doc 12345');
- GotoXY( 6,20);
- WriteLn (' DESENCRIPTAR: Clave secret.doc texto.txt 12345');
- END;
-
-
- BEGIN { Programa Principal } {Main}
- Clrscr;
- Largo1:=LENGTH(Paramstr(1));
- Largo2:=LENGTH(Paramstr(2));
- Largo3:=LENGTH(Paramstr(3));
- If (Largo1 =0) OR (Largo2=0) OR (Largo3=0) then
- Begin
- Clrscr;
- FIN;
- Par1:='';Par2:='';Par3:='';
- if largo1=0 then Par1:=' ORIGEN,';
- if largo2=0 then Par2:=' DESTINO,';
- if largo3=0 then Par3:=' CLAVE';
- GotoXY(10,15);
- TextColor(red);
- Write(' ¡ Introduzca los parámetros ¡ : ',PAR1,PAR2,PAR3);
-
- {introduce the parameters}
-
- TextColor(WHITE);
- GotoXY(1,24);
- Halt(0);
- End;
- If Paramstr(1)=Paramstr(2) Then
- begin;
- Fin;
- GotoXY(10,15);
- TextColor(RED);
- Write(' ¡ Introduzca distintos ficheros ORIGEN y DESTINO ! ');
- TextColor(WHITE);
-
- {origin and destination are the same file}
-
- GotoXY(1,24);
- Halt(1);
- end;
-
- ASSIGN (FUENTE,PARAMSTR(1));
- if existe_arch (paramstr(1)) then
- RESET (FUENTE,1)
- else
- BEGIN
- Clrscr;
- FIN;
- GotoXY(10,15);
- TextColor(RED);
- Write(' ¡ No existe el fichero ORIGEN ! ');
-
- {The origin file don't exist}
-
- TextColor(WHITE);
- GotoXY(1,24);
- Halt(2);
- END;
- ASSIGN (DESTINO,PARAMSTR(2));
- if existe_arch (paramstr(2)) then
- BEGIN
- Clrscr;
- MENU;
- GotoXY(9,18);
- TextColor(LightGreen);
- Write('El archivo destino < ');
- TextColor(LightRed);
-
- {if destination file exist}
-
- Write(PARAMSTR(2));
- TextColor(LightGreen);
- Write(' > existe');
- GotoXY(9,20);
- Write('¿ Quiere SOBREESCRIBIRLO ? ');
-
- {rewrite it?}
-
- TextColor(LightRed);
- write(' (S/N) ');
- TextColor(White);
- Ch := ReadKey;
- TextColor(White);
- if Upcase(Ch) <> 'S' then
- begin
- Close(fuente);
- Clrscr;
- FIN;
- GotoXY(10,15);
- TextColor(Red);
- Write(' ¡ Escriba un nuevo nombre de fichero DESTINO !');
- TextColor(White);
-
- {write a new name for destination file}
-
- GotoXY(1,24);
- Halt(3);
- end;
- END;
-
- ReWrite(DESTINO,1);
- VAL(Paramstr(3),RANDSEED,F);
- Clrscr;
- MENU;
- GotoXY(10,15);
- TextColor(Blue);
- Write('==>');
- a:=1;
- TextColor(Red);
- REPEAT
- BlockRead(FUENTE,BUFFER,SIZEOF(BUFFER),LEIDOS);
- FOR F:=1 TO LEIDOS DO
- Buffer[F] := Buffer[F] XOR RANDOM(255);
- TextColor((a div 60)+1);
- Write('▐');
- a:=a+1;
- if (a mod 60 =0) then GotoXY(13,15);
- BlockWrite(DESTINO,BUFFER,LEIDOS);
- UNTIL (LEIDOS=0);
- CLOSE (FUENTE);
- CLOSE (DESTINO);
- TextColor(White);
- WriteLn;
- WriteLn;
- WriteLn;
- GotoXY(1,24);
- Halt(4)
- END.